<?php
require_once("XmlControls.php");

class XmlFaseIniziale extends XmlControls{
	
	static $instance;
	
	private function __construct() {
		
	}

	static function getInstance(){
		
		if(self::$instance == NULL){
			
			self::$instance = new XmlFaseIniziale();
		}
		
		return self::$instance;
	}

	final public function GetData($conn,$cig,$num_progr,$num_progr_scheda) {
  //SOVRASCRIVO IL NUM_PROGR_SCHEDA PER ASSOCIARE CORRETTAMENTE I MSG DI ERRORE
  $_SESSION['XML__NUM_PROGR_SCHEDA']=$num_progr_scheda;
  
		$rs=array();

		$query_data = "SELECT ID, CIG, DATA_STIPULA, DATA_ESECUTIVITA, IMPORTO_CAUZIONE, DATA_INIZIO_PROG, CONSEGNA_FRAZIONATA, DATA_PRIMA_CONSEGNA, 
									 DATA_CONSEGNA_DEFINITIVA, CONSEGNA_RISERVA, DATA_EFFETTIVO_INIZIO, TERMINE_ULTIMAZIONE, SCHEDA_CHIUSA, UTENTE_ID, 
									 DATA_CHIUSURA, NUM_PROGR, DATA_APPROVAZIONE, DATA_SCADENZA_INVIO, NUM_PROGR_SCHEDA,GUCE, GUBR, GURI, 
									 ALBO_PRETORIO, QUOTIDIANI_NAZIONALI, QUOTIDIANI_LOCALI, PERIODICI, PROFILO_COMMITTENTE, SIMI, SIOCP,ID_SIMOG
									 FROM FASE_INIZIALE WHERE CIG='".$cig."' AND SCHEDA_CHIUSA IN ('S') AND ARCHIVIATA !='S' AND NUM_PROGR='".$num_progr."'";
    
		if ($num_progr_scheda!=""){
			$query_data.=" AND NUM_PROGR_SCHEDA='".$num_progr_scheda."'";
		}

		$rs=$conn->doquery_oracle_import($query_data, "select");

		$rs_data=array();
		foreach($rs as $data){
		
			$rs_data["ID"]=$data["1"];
			$rs_data["CIG"]=$data["2"];
			$rs_data["DATA_STIPULA"]=$data["3"];
			$rs_data["DATA_ESECUTIVITA"]=$data["4"];
			$rs_data["IMPORTO_CAUZIONE"]=$data["5"];
			$rs_data["DATA_INIZIO_PROG"]=$data["6"];
			$rs_data["CONSEGNA_FRAZIONATA"]=$data["7"];
			$rs_data["DATA_PRIMA_CONSEGNA"]=$data["8"];
			$rs_data["DATA_CONSEGNA_DEFINITIVA"]=$data["9"];
			$rs_data["CONSEGNA_RISERVA"]=$data["10"];
			$rs_data["DATA_EFFETTIVO_INIZIO"]=$data["11"];
			$rs_data["TERMINE_ULTIMAZIONE"]=$data["12"];
			$rs_data["SCHEDA_CHIUSA"]=$data["13"];
			$rs_data["UTENTE_ID"]=$data["14"];
			$rs_data["DATA_CHIUSURA"]=$data["15"];
			$rs_data["NUM_PROGR"]=$data["16"];
			$rs_data["DATA_APPROVAZIONE"]=$data["17"];
			//$rs_data["AGGIUDICATARI_STR"]=$data["18"];
			//$rs_data["INCARICATI_STR"]=$data["19"];
			$rs_data["DATA_SCADENZA_INVIO"]=$data["18"];
			$rs_data["NUM_PROGR_SCHEDA"]=$data["19"];
			$rs_data["GUCE"]=$data["20"];	
      $rs_data["GUBR"]=$data["21"];
      $rs_data["GURI"]=$data["22"];
      $rs_data["ALBO_PRETORIO"]=$data["23"];
      $rs_data["QUOTIDIANI_NAZIONALI"]=$data["24"];
      $rs_data["QUOTIDIANI_LOCALI"]=$data["25"];
      $rs_data["PERIODICI"]=$data["26"];
      $rs_data["PROFILO_COMMITTENTE"]=$data["27"];
      $rs_data["SIMI"]=$data["28"];
      $rs_data["SIOCP"]=$data["29"];
      $rs_data["ID_SIMOG"]=$data["30"];	
		}
		
		return $rs_data;
		
	}
	
	final public function GetAggiudicatari($conn,$cig,$num_progr,$num_progr_scheda) {	

		$rs=array();
    //MANCA IL CODICE PAESE - RICHIESTA DI AGGIUNTA ALL'INTERNO DELLA VISTA V_FI_AGGIUDICATARI
		$query_data ="SELECT CODFISC_AGGIUDICATARIO,DENOMINAZIONE_AGGIUDICATARIO,INPS,INAIL,CASSA
									FROM FI_AGGIUDICATARI
									WHERE CIG='".$cig."' AND NUM_PROGR='".$num_progr."'";
									
		if ($num_progr_scheda!=""){
			$query_data.=" AND NUM_PROGR_SCHEDA='".$num_progr_scheda."'";
		}	

		$rs=$conn->doquery_oracle_import($query_data, "select");

		//SE TUTTI I VALORI DEL 1 RECORD SONO NULL SIGNIFICA CHE LA QUERY NON RESTITUISCE NESSUN RECORD
		$cont_rs=@array_count_values($rs[1]);
		$cont_rs=count($cont_rs);

		$rs_data=array();
		
		if($cont_rs>0){
			$i=0;
			
			foreach($rs as $data){

				$rs_data["AGGIUDICATARI"][$i]["CODFISC"]=$data["1"];
				$rs_data["AGGIUDICATARI"][$i]["DENOMINAZIONE"]=$data["2"];
				$rs_data["AGGIUDICATARI"][$i]["INPS"]=$data["3"];
				$rs_data["AGGIUDICATARI"][$i]["INAIL"]=$data["4"];
				$rs_data["AGGIUDICATARI"][$i]["CASSA"]=$data["5"];
				//$rs_data["AGGIUDICATARI"][$i]["CODICE_PAESE"]=$data["6"];
				$i=$i+1;
			}
		}
		
		return $rs_data;
	}	

	final public function GetIncaricati($conn,$cig,$num_progr,$incaricati) {	

		$rs=array();
    //Manca cig progettazione esterna ... Vedi specifiche MassLoader ver.: 2.1 del: 03/11/2009
		$query_data ="SELECT CODFISC,COGNOME,NOME,RUOLO_INCARICATO_ID,DATA_INIZIO_INCARICO,DATA_FINE_INCARICO
									FROM FI_INCARICATI
									WHERE CIG='".$cig."' AND NUM_PROGR='".$num_progr."'";
									
		if ($num_progr_scheda!=""){
		
			$query_data.=" AND NUM_PROGR_SCHEDA='".$num_progr_scheda."'";
		}

		$rs=$conn->doquery_oracle_import($query_data, "select");
		
		//SE TUTTI I VALORI DEL 1 RECORD SONO NULL SIGNIFICA CHE LA QUERY NON RESTITUISCE NESSUN RECORD
		$cont_rs=@array_count_values($rs[1]);
		$cont_rs=count($cont_rs);
		
		$rs_data=array();
		
		if($cont_rs>0){
			
			$i=0;
			
			foreach($rs as $data){

				$rs_data["INCARICATI"][$i]["CODFISC"]=$data["1"];
				$rs_data["INCARICATI"][$i]["COGNOME"]=$data["2"];
				$rs_data["INCARICATI"][$i]["NOME"]=$data["3"];
				$rs_data["INCARICATI"][$i]["RUOLO_INCARICATO_ID"]=$data["4"];
				$rs_data["INCARICATI"][$i]["DATA_AFFIDAMENTO"]=$data["5"];
				$rs_data["INCARICATI"][$i]["DATA_CONSEGNA"]=$data["6"];
				//$rs_data["INCARICATI"][$i]["CIG_AFFIDAMENTO"]=$data["7"];	
				$i=$i+1;
			}
		}
		
		return $rs_data;
	}
	
	final public function CreateXml($rs,$conn) {

		/*
		echo "<pre>";
		print_r($rs);
		echo "</pre>";
		exit;
		*/
		
		$xml='<DatiInizio>';
		$rs_data[1]=$rs["data"];
		foreach($rs_data as $record){
			
			//Pubblicazione esito
			$QUOTIDIANI_NAZ=$this->WorkIntero5("QUOTIDIANI_NAZ",$record["QUOTIDIANI_NAZIONALI"]);    //presenza A* - V*						
			$QUOTIDIANI_REG=$this->WorkIntero5("QUOTIDIANI_REG",$record["QUOTIDIANI_LOCALI"]);			 //presenza A* - V*		
			$PROFILO_COMMITTENTE=$this->WorkSN("PROFILO_COMMITTENTE",$record["PROFILO_COMMITTENTE"]);//presenza A* - V*		
			$SITO_MINISTERO_INF_TRASP=$this->WorkSN("SITO_MINISTERO_INF_TRASP",$record["SIMI"]);		 //presenza A* - V*	
			$SITO_OSSERVATORIO_CP=$this->WorkSN("SITO_OSSERVATORIO_CP",$record["SIOCP"]);						 //presenza A* - V*		
		
			$DATA_GUCE=$this->WorkData("DATA_GUCE",$record["GUCE"]);															       //presenza A - V
			$DATA_GURI=$this->WorkData("DATA_GURI",$record["GURI"]);															       //presenza A - V
			$DATA_ALBO=$this->WorkData("DATA_ALBO",$record["ALBO_PRETORIO"]);														 //presenza A - V	
	
 			$xml.='<PubblicazioneEsito ';

			if ($DATA_GUCE!=''){$xml.=' tns:DATA_GUCE="'.$DATA_GUCE.'"';}
			if ($DATA_GURI!=''){$xml.=' tns:DATA_GURI="'.$DATA_GURI.'"';}
			if ($DATA_ALBO!=''){$xml.=' tns:DATA_ALBO="'.$DATA_ALBO.'"';}
		 if ($QUOTIDIANI_NAZ!=''){$xml.=' tns:QUOTIDIANI_NAZ="'.$QUOTIDIANI_NAZ.'"';}
		 if ($QUOTIDIANI_REG!=''){$xml.=' tns:QUOTIDIANI_REG="'.$QUOTIDIANI_REG.'"';}
		 if ($PROFILO_COMMITTENTE!=''){$xml.=' tns:PROFILO_COMMITTENTE="'.$PROFILO_COMMITTENTE.'"';}
		 if ($SITO_MINISTERO_INF_TRASP!=''){$xml.=' tns:SITO_MINISTERO_INF_TRASP="'.$SITO_MINISTERO_INF_TRASP.'"';}
		 if ($SITO_OSSERVATORIO_CP!=''){$xml.=' tns:SITO_OSSERVATORIO_CP="'.$SITO_OSSERVATORIO_CP.'"';}
    
			$xml.='/>';
			
			//Inizio
			$DATA_STIPULA=$this->WorkData("DATA_STIPULA",$record["DATA_STIPULA"]);                    //presenza A - V
			$DATA_ESECUTIVITA=$this->WorkData("DATA_ESECUTIVITA",$record["DATA_ESECUTIVITA"]); 	      //presenza A - V
			$IMPORTO_CAUZIONE=$this->WorkImporto("IMPORTO_CAUZIONE",$record["IMPORTO_CAUZIONE"],"Y"); //presenza A* - V*
			$DATA_INI_PROG_ESEC=$this->WorkData("DATA_INI_PROG_ESEC",$record["DATA_INIZIO_PROG"]);	  //presenza A - V
			$DATA_APP_PROG_ESEC=$this->WorkData("DATA_APP_PROG_ESEC",$record["DATA_APPROVAZIONE"]);	  //presenza A - V
			$FLAG_FRAZIONATA=$this->WorkSN("FLAG_FRAZIONATA",$record["CONSEGNA_FRAZIONATA"],"Y");     //presenza A* - V*
			$DATA_VERBALE_CONS=$this->WorkData("DATA_VERBALE_CONS",$record["DATA_PRIMA_CONSEGNA"]);	  //presenza A - V
			$DATA_VERBALE_DEF=$this->WorkData("DATA_VERBALE_DEF",$record["DATA_CONSEGNA_DEFINITIVA"]);//presenza A - V	
			$FLAG_RISERVA=$this->WorkSN("FLAG_RISERVA",$record["CONSEGNA_RISERVA"],"Y");              //presenza A* - V*
			$DATA_VERB_INIZIO=$this->WorkData("DATA_VERB_INIZIO",$record["DATA_EFFETTIVO_INIZIO"]);	  //presenza A - V
			
			//MOD_AUTH  $DATA_TERMINE=$this->WorkData("DATA_TERMINE",$record["TERMINE_ULTIMAZIONE"],"Y");	        //presenza A* - V*
			$DATA_TERMINE=$this->WorkData("DATA_TERMINE",$record["TERMINE_ULTIMAZIONE"]);	
			
			
			$ID_SCHEDA_LOCALE=$this->WorkNumero("ID_SCHEDA_LOCALE",$record["ID"]);                    
			$ID_SCHEDA_SIMOG=$this->WorkNumero("ID_SCHEDA_SIMOG",$record["ID_SIMOG"]);                
			
			//MOD_AUTH  $xml.='<Inizio  tns:IMPORTO_CAUZIONE="'.$IMPORTO_CAUZIONE.'" tns:FLAG_FRAZIONATA="'.$FLAG_FRAZIONATA.'" tns:FLAG_RISERVA="'.$FLAG_RISERVA.'" tns:DATA_TERMINE="'.$DATA_TERMINE.'"';
			$xml.='<Inizio  tns:IMPORTO_CAUZIONE="'.$IMPORTO_CAUZIONE.'" tns:FLAG_FRAZIONATA="'.$FLAG_FRAZIONATA.'" tns:FLAG_RISERVA="'.$FLAG_RISERVA.'" ';
			if ($DATA_TERMINE!=''){$xml.=' tns:DATA_TERMINE="'.$DATA_TERMINE.'"';}
			
			if ($DATA_STIPULA!=''){$xml.=' tns:DATA_STIPULA="'.$DATA_STIPULA.'"';}
			if ($DATA_ESECUTIVITA!=''){$xml.=' tns:DATA_ESECUTIVITA="'.$DATA_ESECUTIVITA.'"';}
			if ($DATA_INI_PROG_ESEC!=''){$xml.=' tns:DATA_INI_PROG_ESEC="'.$DATA_INI_PROG_ESEC.'"';}			
			if ($DATA_APP_PROG_ESEC!=''){$xml.=' tns:DATA_APP_PROG_ESEC="'.$DATA_APP_PROG_ESEC.'"';}	
			if ($DATA_VERBALE_CONS!=''){$xml.=' tns:DATA_VERBALE_CONS="'.$DATA_VERBALE_CONS.'"';}	
			if ($DATA_VERBALE_DEF!=''){$xml.=' tns:DATA_VERBALE_DEF="'.$DATA_VERBALE_DEF.'"';}	
			if ($DATA_VERB_INIZIO!=''){$xml.=' tns:DATA_VERB_INIZIO="'.$DATA_VERB_INIZIO.'"';}		
			/*if ($ID_SCHEDA_LOCALE!=''){$xml.=' tns:ID_SCHEDA_LOCALE="'.$ID_SCHEDA_LOCALE.'"';}
			if ($ID_SCHEDA_SIMOG!=''){$xml.=' tns:ID_SCHEDA_SIMOG="'.$ID_SCHEDA_SIMOG.'"';}*/
			/*if ($ID_SCHEDA_SIMOG!='')
			{
				$xml.=' tns:ID_SCHEDA_SIMOG="'.$ID_SCHEDA_SIMOG.'"';
			}
			else
			{		  
			   $query_data_DC ="SELECT  ID_SIMOG FROM DATI_COMUNI WHERE CIG='".$record["CIG"]."' AND NUM_PROGR='".$record["NUM_PROGR"]."'";
               $rsDC=$conn->doquery_oracle_import($query_data_DC, "select");
			  if($rsDC[1][1]=="")
			  {
                if ($ID_SCHEDA_LOCALE!='')
                {
			      $xml.=' tns:ID_SCHEDA_LOCALE="'.$ID_SCHEDA_LOCALE.'"';
			    }
		      }
		    }*/
		    $xml.=' tns:ID_SCHEDA_LOCALE="'.$ID_SCHEDA_LOCALE.'"';		
			
			$xml.='/>';
			
			//Aggiudicatari
			if(isset($record["AGGIUDICATARI"])){
			 foreach(@$record["AGGIUDICATARI"] as $key=> $values){

					$CODICE_FISCALE_AGGIUDICATARIO=$this->WorkCF("CODICE_FISCALE_AGGIUDICATARIO",$values["CODFISC"],"Y");
					
					//Da gestire
					//$CODICE_STATO=$this->WorkStringa("CODICE_STATO",$values["CODICE_PAESE"],'50');
					$CODICE_STATO="";
					
					$INPS=$this->WorkStringa("INPS",$values["INPS"],'20');
					$INAIL=$this->WorkStringa("INAIL",$values["INAIL"],'20');
					$CASSA=$this->WorkStringa("CASSA",$values["CASSA"],'20');
					
					$xml.='<Posizioni tns:CODICE_FISCALE_AGGIUDICATARIO="'.$CODICE_FISCALE_AGGIUDICATARIO.'" tns:CODICE_STATO="'.$CODICE_STATO.'"';
					
					if($INPS!=''){
						$xml.=' tns:CODICE_INPS="'.$INPS.'"';
					}	
					if($INAIL!=''){
						$xml.=' tns:CODICE_INAIL="'.$INAIL.'"';
					}				
					if($CASSA!=''){
						$xml.=' tns:CODICE_CASSA="'.$CASSA.'"';
					}	
								
					$xml.='/>';				
					
			 }
			}

			//Incaricati
			if(isset($record["INCARICATI"])){
			 foreach($record["INCARICATI"] as $key=> $values){

					$CODICE_FISCALE_RESPONSABILE=$this->WorkCF("CODICE_FISCALE_AGGIUDICATARIO",$values["CODFISC"],"Y");
					$ID_RUOLO=$this->WorkRuoloResponsabileType("ID_RUOLO",$values["RUOLO_INCARICATO_ID"],$conn);
					//Vedi specifiche MassLoader ver.: 2.1 del: 03/11/2009
					$SEZIONE="IN"; 
					//$CIG_PROG_ESTERNA=$this->WorkCig($values["CIG_AFFIDAMENTO"]);	
					//$DATA_AFF_PROG_ESTERNA=$this->WorkData("DATA_AFF_PROG_ESTERNA",$values["DATA_AFFIDAMENTO"]);	
					//$DATA_CONS_PROGR_ESTERNA=$this->WorkData("DATA_CONS_PROGR_ESTERNA",$values["DATA_CONSEGNA"]); 	
					
					$xml.='<Incaricati tns:CODICE_FISCALE_RESPONSABILE="'.$CODICE_FISCALE_RESPONSABILE.'" tns:ID_RUOLO="'.$ID_RUOLO.'" tns:SEZIONE="'.$SEZIONE.'"';
					
					/* Non sono utilizzati secondo le speciche MassLoader
					if($CIG_PROG_ESTERNA!=''){
						$xml.=' tns:CIG_PROG_ESTERNA="'.$CIG_PROG_ESTERNA.'"';
					}
					if($DATA_AFF_PROG_ESTERNA!=''){
						$xml.=' tns:DATA_AFF_PROG_ESTERNA="'.$DATA_AFF_PROG_ESTERNA.'"';
					}	
					if($DATA_CONS_PROGR_ESTERNA!=''){
						$xml.=' tns:DATA_CONS_PROGR_ESTERNA="'.$DATA_CONS_PROGR_ESTERNA.'"';
					}
					*/								
					$xml.='/>';
			}
	
		 }
		}	
		
		$xml.='</DatiInizio>';		 

		return $xml;

	}

}
?>